#pragma once
#include <arpa/inet.h>
#include <netinet/in.h>
#include <string>
/**
 * 该文件定义了一个简单的InetAddress类，用于表示网络地址。
 * InetAddress类包含了IP地址和端口号，并提供了相关的构造函数和成员函数。
 * 该类用于网络编程中，方便地处理IP地址和端口号的组合。
 * 只支持ipv4地址。
 */
class InetAddress {
public:
  // 构造函数
  explicit InetAddress(uint16_t port, std::string ip="127.0.0.1");
  explicit InetAddress(const sockaddr_in &addr): addr_(addr) {};
  // 获取IP地址
  std::string toIp() const;
  // 获取端口号
  uint16_t toPort() const;
  // 获得IP+port
  std::string toIpPort() const;
   
  const sockaddr_in& getSockAddr() const{
    return addr_;
  }
  void setSockAddr(const sockaddr_in &addr) {
    addr_ = addr;
  }

private:
    sockaddr_in addr_; // 存储IP地址和端口号的sockaddr_in结构体
};